package com.dys.util;

import java.util.List;

/**
 * @className: com.dys.util.PageUtil
 * @description: 分页工具类提取
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/09/26 21:17
 */
public class PageUtil {
    /**
     * 一共有多少条数据
     */
    private int totalCount;

    /**
     * 每页展示几条数据
     */
    private int size;

    /**
     * 一共多少页
     */
    private int totalPageCount;

    /**
     * 当前页码
     */
    private int page;

    /**
     * 展示页数数组
     */
    private int[] pageNums;

    /**
     * 前端展示的集合
     */
    private List<?> list;

    public List<?> getList() {
        return list;
    }

    public void setList(List<?> list) {
        this.list = list;
    }

    // 获取startIndex的方法：
    public int getStartIndex() {
        return size * (page - 1);
    }

    // 从数据库中查出一共有多少条记录，通过参数totalCount设置进来
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    /**
     * 设置一共多少页
     */
    public void setTotalPageCount() {
        if (this.totalCount % 3 == 0) {
            this.totalPageCount = this.totalCount / this.size;// 总记录数：3,6,9，，，
        } else {
            this.totalPageCount = this.totalCount / this.size + 1;
        }
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int[] getPageNums() {
        return pageNums;
    }

    public void setPageNums() {
        // 初始化数组
        this.pageNums = new int[this.totalPageCount > 3 ? 3 : this.totalPageCount];
        // 定义一个开始标号
        int begin = 1;
        // 定义一个结束标号
        int end = 3;
        // 定义数组初始下标
        int k = 0;
        // 如果页数小于3
        if (this.totalPageCount <= 3) {
            end = this.totalPageCount;
        }
        // 如果页数大于3
        if (this.totalPageCount > 3) {
            begin = this.page - 1;
            end = this.page + 1;
            if (begin <= 0) {
                begin = 1;
                end = 3;
            }
            if (end > this.totalPageCount) {
                end = this.totalPageCount;
                begin = end - 2;
            }
        }
        // 将从begin开始到end结束的标号放入数组中
        for (int i = begin; i <= end; i++) {
            this.pageNums[k] = i;
            k++;
        }
    }
}
